home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
8bitfiles.net/archives
/
archives.tar
/
archives
/
geos-archive
/
GEOS-D64
/
GEOS Mega ASM (19xx)(-).d64
/
list5-4
< prev
next >
Wrap
Text File
|
2019-04-13
|
7KB
|
305 lines
if .p
t "TopSym"
t "TopMac"
:grcntrl1 = $d011
:BildBit = %10000000
:MausBit = %01000000
:Proze~Bit = %00100000
:BildAus = %01111111
:MausAus = %10111111
:Proze~Aus = %11011111
endif
n "BlackScreen"
i
:Start
lda #0
jsr SetPattern
LoadB dispBufferOn,ST_WR_FORE!ST_WR_BACK
ldy #5
::10
lda RecTabelle,y
sta r2L,y
dey
bpl :10
jsr Rectangle
LoadW r0,Men}Tabelle ; Zeiger auf Men}Tabelle
lda #0 ; Maus auf 1. Men}pkt
jsr DoMenu ; Men} darstellen
jsr IconZusatzText
LoadB iconSelFlag,ST_INVERT
LoadW r0,IconTable ; Zeiger auf Icons
jsr DoIcons ; Icon darstellen
jsr InitProze~
LoadB FlagByte,BildBit ! MausBit ! Proze~Bit
jsr SetzeZeit
ldx #0
jsr RestartProcess
rts ; R}cksprung zur MainLoop
:RecTabelle
b 0
b 199
w 0
w 319
:Men}Tabelle
b 0 ; obere y-Koord. (byte)
b 14 ; untere y-Koord. (byte)
w 0 ; linke x-Koord. (word)
w 102 ; rechte x-Koord. (word)
b 3 ! HORIZONTAL
w geosText
b SUB_MENU
w geosSubTabelle
w ZeitText
b MENU_ACTION
w ZeitReaktion
w VerlassenText
b MENU_ACTION
w EnterDeskTop
:VerlassenText
b "verlassen",NULL
;------------Hauptmen}punkt geos----------------
:geosText
b "geos",NULL
:geosSubTabelle
b 15 ; obere y-Koord. (byte)
b 29 ; untere y-Koord. (byte)
w 0 ; linke x-Koord. (word)
w 40 ; rechte x-Koord. (word)
b 1 ! VERTICAL
w InfoText
b MENU_ACTION
w InfoReaktion
:InfoText
b "Info",NULL
:InfoReaktion
jsr GotoFirstMenu
jsr MonitorAn
LoadW r0,InfoDiaTab
jsr DoDlgBox
rts
:InfoDiaTab
b $81 ; Standard
b DBTXTSTR
b 10
b 25
w InfoText1
b DBTXTSTR
b 10
b 40
w InfoText2
b DBTXTSTR
b 10
b 55
w InfoText3
b OK
b 16
b 70
b NULL
:InfoText1 b BOLDON,OUTLINEON,"BlackScreen"
b PLAINTEXT,BOLDON,NULL
:InfoText2 b "Ein Beipiel f}r eine",NULL
:InfoText3 b "Application",NULL
;------------Hauptmen}punkt Zeit----------------
:ZeitText b "Zeit",NULL
:ZeitReaktion
jsr ReDoMenu
jsr MonitorAn
LoadW a0,ZeitASCII
LoadW r0,DialogboxTabelle
jsr DoDlgBox
jsr GetDecimal
jsr SetzeZeit
rts
:DialogboxTabelle
b 1 ; Schattenmuster 1
b 32,127 ; Y-Koordinaten
w 64,255 ; X-Koordinaten
b DBTXTSTR
b 10
b 16
w EinText
b DBGETSTRING
b 10
b 40
b a0L
b 5
b NULL ; Endekennzeichen
:EinText b "Geben Sie den Zeitfaktor ein!",NULL
:ZeitASCII b "200",0,0,NULL
:GetDecimal
lda #0
sta a4L
sta a4H
sta a5H
tax
lda #10
sta a5L
::3 lda ZeitASCII,x
beq :1
txa
pha
ldx #a4L
ldy #a5L
jsr DMult
pla
tax
lda ZeitASCII,x
sec
sbc #48
clc
adc a4L
sta a4L
bcc :2
inc a4H
::2 inx
bne :3
::1 MoveW a4,ZeitWert
rts
;------------Iconbehandlung---------------------
:XIcon = 12
:YIcon = 154
:IconTable b 1 ; 1 Icon
w 0 ; keine neue Maus postion !
b 0 ; (Y-Position Maus)
w IconGrafik ; Zeiger auf kompr. Bitmap
b XIcon ; X-Position Icon
b YIcon ; Y-Position Icon
b IconBreite ; Breite des Icon s
b IconH|he ; H|he des Icons
w IconRoutine ; Iconroutine
:IconGrafik
:IconBreite = .x
:IconH|he = .y
:IconRoutine
lda #Proze~Bit
bit FlagByte
beq :0 ; Verzweige wenn Proze~ aus
lda FlagByte
and #Proze~Aus
sta FlagByte
jsr MonitorAn
jsr SetzeZeit
ldx #0
jsr BlockProcess
rts
::0
lda FlagByte
ora #Proze~Bit
sta FlagByte
ldx #0
jsr UnblockProcess
rts
:IconZusatzText
LoadW r0,:t1
LoadB r1H,160
LoadW r11,20
jsr PutString
LoadW r0,:t2
LoadB r1H,168
LoadW r11,20
jsr PutString
rts
::t1 b "BlackScreen an:",NULL
::t2 b "BlackScreen aus:",NULL
;------------Proze~behandlung-------------------
:InitProze~
LoadW r0,Proze~Tabelle
lda #1
jsr InitProcesses
rts
:Proze~Tabelle
w Proze~Routine
w 2
:Proze~Routine
CmpW MausXAlt,mouseXPos
bne :0 ; Maus bewegt
CmpB MausYAlt,mouseYPos
bne :0 ; Maus bewegt
lda FlagByte
and #MausAus
sta FlagByte
jmp :1
::0 lda FlagByte
ora #MausBit
sta FlagByte
::1 MoveW mouseXPos,MausXAlt
MoveB mouseYPos,MausYAlt
bit FlagByte ; Testen ob Monitor an
bmi :3 ; Verzweige wenn Monitor an
bvs :2 ; Verzweige wenn Maus bewegt
rts
::2 jsr MonitorAn
jmp SetzeZeit
::3 bvc :4 ; Verzweige wenn Maus ruhig
jmp SetzeZeit ; Z{hler zur}cksetzen, Ende
::4 ldx #a1L
jsr Ddec
bne :5 ; Verzweige wenn Z{hler = 0
jsr MonitorAus
::5 rts
:FlagByte b 0
:ZeitWert w 200
:SetzeZeit
MoveW ZeitWert,a1
rts
:MonitorAn
jsr InitForIO
lda grcntrl1
ora #%00010000
sta grcntrl1
jsr DoneWithIO
lda FlagByte
ora #BildBit
sta FlagByte
rts
:MonitorAus
jsr InitForIO
lda grcntrl1
and #%11101111
sta grcntrl1
jsr DoneWithIO
lda FlagByte
and #BildAus
sta FlagByte
rts
:MausXAlt w 0
:MausYAlt b 0